# @Time : 2024-10-24 11:27
# @Author : Fioman 
# @Phone : 13149920693
"""
实例方法: 无装饰器, 第一个参数self, 可以访问实例对象和方法,也可以访问类对象和方法,仅仅只能通过实例调用
类方法: @classmethod,第一个参数cls,可以访问类变量和类方法,可以通过类和实例调用(推荐使用类调用)
静态方法:@staticmethod,第一个参数无,可以访问类变量和类方法,通过类名的方式,可以通过类和实例进行调用
"""


class Animal:
    objCount = 0

    def __init__(self, name):
        self.name = name
        Animal.increase_obj_count()

    def speak(self):
        """
        实例方法
        :return:
        """
        print("动物在说话,实例方法")

    @classmethod
    def increase_obj_count(cls):
        cls.objCount += 1  # 用来操作类变量

    @staticmethod
    def show_something(info):
        print("我是静态方法,我仅仅是用来显示一些内容 : {}".format(info))


dog = Animal("Dog")
cat = Animal("Cat")
dog.speak()  # 只能用实例对象调用实例方法
dog.increase_obj_count()  # 实例对象调用类方法
Animal.increase_obj_count()  # 类对象调用类方法
dog.show_something(Animal.objCount)  # 实例对象调用静态方法
Animal.show_something(dog.objCount)  # 类对象调用静态方法

# Animal.speak() # 这个就不行了 类变量不能调用实例方法
